name: PyPI Release

# https://help.github.com/en/actions/reference/events-that-trigger-workflows
on:  # Trigger the workflow on push or pull request, but only for the master branch
  push:
    branches: [master]
  release:
    types: [published]


jobs:
  # based on https://github.com/pypa/gh-action-pypi-publish
  build-publish:
    runs-on: ubuntu-20.04

    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-python@v4
      with:
        python-version: 3.8

    - name: Install dependencies
      run: python -m pip install -U setuptools wheel build twine
    - name: Build package
      run: python -m build
    - name: Check package
      run: twine check dist/*

    - name: Upload to release
      uses: AButler/upload-release-assets@v2.0
      with:
        files: 'dist/*'
        repo-token: ${{ secrets.GITHUB_TOKEN }}

    # We do this, since failures on test.pypi aren't that bad
    - name: Publish to Test PyPI
      if: startsWith(github.event.ref, 'refs/tags') || github.event_name == 'release'
      uses: pypa/gh-action-pypi-publish@master
      with:
        user: __token__
        password: ${{ secrets.test_pypi_password }}
        repository_url: https://test.pypi.org/legacy/
        verbose: true

    - name: Publish distribution 📦 to PyPI
      if: startsWith(github.event.ref, 'refs/tags') || github.event_name == 'release'
      uses: pypa/gh-action-pypi-publish@master
      with:
        user: __token__
        password: ${{ secrets.pypi_password }}
